package cn.com.flat.mybatis.jdbc.dialect;

import org.springframework.util.StringUtils;

/**
 * 标题: 数据库方言基类
 * <p>
 * 描述: 数据库方言基类
 * <p>
 * 版权：Copyright (c) 2016
 * <p>
 *
 * @author 张顺
 * @version 1.0
 * @created 2016/11/09/23:06
 */
public abstract class Dialect {
    public int getType(String typeName){
        if (StringUtils.isEmpty(typeName)){
             return 0;
        }
        String type = typeName.toUpperCase();
        if("DATE".equals(type)){
           return 93;
        }
        if("VARCHAR".equals(type) || "VARCHAR2".equals(type)){
           return 12;
        }
        return 0;
    }

    /**
     * 是否支持分页
     * @return
     */
    public abstract boolean supportsLimit();

    /**
     * 是否支持分页偏移量
     * @return
     */
    public abstract  boolean supportsLimitOffset();

    /**
     * 获取分页字符串
     * @param sql
     * @param offset
     * @param limit
     * @return
     */
    public String getLimitString(String sql,int offset,int limit){
        return getLimitString(sql,offset,Integer.toString(offset),limit,Integer.toString(limit));
    }

    public abstract String getLimitString(String paramString1, int paramInt1,
                                          String paramString2, int paramInt2,
                                          String paramString3);

}
